#include <stdbool.h>
#include <stddef.h>
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
};


bool isSametree(struct TreeNode* p,struct TreeNode* q)
{
    if(!p&&!q) return true;
    if(!p||!q) return false;
    if(p->val!=q->val) return false;
    return isSametree(p->left,q->left)&& isSametree(p->right,q->right);
}

bool isSubtree(struct TreeNode* root, struct TreeNode* subRoot){
    if(root==NULL) 
        return false;

    if(isSametree(root,subRoot)) 
        return true;

    return isSubtree(root->left,subRoot)|| isSubtree(root->right,subRoot);
}